package com.bytecat.algui;

interface ICommandService {
    int getPid();
    int getAidlPid();
    boolean isAidlConnectApp();
    void killSelf(boolean onlyMainProcess);
    void bindAidlToApp();
    String test();
     void setIsSecureWrites(boolean sw);// 设置安全写入启用状态
        //模块[动/静]态基址偏移内存修改
         long getModuleBaseAddr(String moduleName, int headType); // 获取模块起始地址(基址)
         long jump(long addr,int count); // 跳转指针
         long jump32(long addr); // 跳转指针 [32位]
         long jump64(long addr); // 跳转指针 [64位]
         int setMemoryAddrValue(String value, long addr, int type, boolean isFree); // 设置指定内存地址指向的值 🛡️该方法已对当前进程进行保护 防止GG模糊🛡️
         String getMemoryAddrData(long addr, int type); // 获取指定内存地址的数据
        //读[推荐Root外部辅助用](支持第三方进程，这是在进程的mem文件读取的，有io所以像绘制这种频繁使用可能会影响性能)
         int getDword(long addr);
         float getFloat(long addr);
         double getDouble(long addr);
         long getQword(long addr);
         int getWord(long addr);
         byte getByte(long addr);
         String getString(long addr);
        //读[推荐一体直装用](仅供自身进程使用，直接解引用访问所以很快，第三方进程会引发野指针所以仅供自身进程使用，比如给直装绘制用非常快)
         int getDword_t(long addr);
         float getFloat_t(long addr);
         double getDouble_t(long addr);
         long getQword_t(long addr);
         int getWord_t(long addr);
         byte getByte_t(long addr);
         String getString_t(long startAddr);
        //内存搜索
         void setMemoryArea(int memoryArea); // 设置要搜索的内存区域
         long[] MemorySearch(String value, int type); // 内存搜索  【支持范围搜索 格式：最小值~最大值】
         long[] MemorySearchRange(String value, int type); // 内存搜索范围值 【格式：最小值~最大值】
         long[] MemorySearchUnited(String value, int type);//联合内存搜索 【格式：值1;值2;值3;n个值:附近范围 示例：2D;3F;4E:50 或 2D;3F;4E没有范围则使用默认范围,两个范围符::代表按顺序搜索 (同GG) 并且值也支持范围例如1~2;3:64】
         long[] ImproveOffset(String value, int type, long offset);//偏移改善 [筛选偏移处特征值 支持联合改善，范围改善]
         long[] ImproveOffsetRange(String value, int type, long offset);//偏移范围改善 [筛选偏移处只会在一个范围内变化的特征值] 【格式：最小值~最大值 (同GG)】
         long[] ImproveOffsetUnited(String value, int type, long offset);//偏移联合改善 [筛选偏移处永远只会为某些值的特征值] 【格式：值1;值2;n个值; 示例：2D;3F;4E 或 2D;3~6F;9E 注：联合改善不支持附近范围和顺序改善】
         long[] ImproveValue(String value, int type);//改善 [支持联合改善，范围改善]
         int MemoryOffsetWrite(String value, int type, long offset, boolean isFree); // 结果偏移写入数据 🛡️该方法已对当前进程进行保护 防止GG模糊🛡️
         int getResultCount(); // 获取最终搜索结果数量
         long[] getResultList(); // 获取最终搜索结果列表
         int printResultListToFile(String filePath); // 打印最终搜索结果列表到指定文件
         int clearResultList(); // 清空最终搜索结果列表
        //冻结内存修改
         void setFreezeDelayMs(int delay); // 设置冻结延迟时间（毫秒）
         int getFreezeNum(); // 获取冻结项目数量
         int addFreezeItem(String value, long addr, int type); // 添加冻结项目
         int removeFreezeItem(long addr); // 移除指定冻结项目
         int removeAllFreezeItem(); // 移除所有冻结项目
         int startAllFreeze(); // 启动所有冻结项目
         int stopAllFreeze(); // 停止所有冻结项目
        //获取内存信息相关工具
         String getMemoryAddrMapLine(long address); // 获取指定内存地址的Maps映射行
         String getMapLineMemoryAreaName(String mapLine); // 获取Maps映射行所在内存区域名称
         String getMemoryAreaIdName(int memid); // 获取指定内存id的内存名称
         String getMemoryAreaName(); // 获取当前内存名称
         String getDataTypeName(int typeId); // 获取指定数据类型id的数据类型名称
}
